package org.example.handle;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.example.domin.School;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * @Aspect 表示这是一个切面类
 */
@Aspect
public class MyAspect {
    /**
     * 切面的后置通知
     * 1.在目标方法后执行
     * 2.能获取到目标方法的执行结果
     * 3.不会影响目标方法的执行
     */
    @AfterReturning(value = "execution(public * org.example.service.SchoolService.get())",returning = "res")
    public void myAfterReturning(Object res){
        System.out.println("执行了后置通知：获取到的返回结果："+res);
        if(res.getClass()==School.class){
            //如果返回值是值类型，在AfterReturning中重新复制是不影响目标方法的返回值
            //如果返回值是引用类型，在AfterReturning中重新赋值是会影响目标方法的返回值
            School school=(School) res;
            school.setName("99999999999999999999999");
            System.out.println("修改学校的返回值："+school.getName());
        }
    }
}
